package top.infopub.job.hr.service.impl;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import top.infopub.generic.GenericDao;
import top.infopub.generic.GenericServiceImpl;
import top.infopub.job.hr.dao.NcStaffinfoDao;
import top.infopub.job.hr.service.INcStaffinfoService;
import top.infopub.job.util.NCUtil;
import top.infopub.model.hr.NcOrginfo;
import top.infopub.model.hr.NcStaffinfo;
import top.infopub.util.DateUtil;

/**
 * NC 人员信息Service业务层处理
 *
 * @author zxy
 * @date 2020-12-21
 */
@Service
public class NcStaffinfoServiceImpl  extends GenericServiceImpl<NcStaffinfo, String>  implements INcStaffinfoService
{
    @Autowired
    private NcStaffinfoDao ncStaffinfoDao;

    @Override
    public GenericDao<NcStaffinfo, String> getDao() {
        return ncStaffinfoDao;
    }

    /**
     * 查询NC 人员信息
     *
     * @param pkPsndoc NC 人员信息ID
     * @return NC 人员信息
     */
    @Override
    public NcStaffinfo selectNcStaffinfoById(String pkPsndoc)
    {
        return ncStaffinfoDao.selectNcStaffinfoById(pkPsndoc);
    }

    /**
     * 查询NC 人员信息列表
     *
     * @param ncStaffinfo NC 人员信息
     * @return NC 人员信息
     */
    @Override
    public List<NcStaffinfo> selectNcStaffinfoList(NcStaffinfo ncStaffinfo)
    {
        return ncStaffinfoDao.selectNcStaffinfoList(ncStaffinfo);
    }

    /**
     * 新增NC 人员信息
     *
     * @param ncStaffinfo NC 人员信息
     * @return 结果
     */
    @Override
    public int insertNcStaffinfo(NcStaffinfo ncStaffinfo)
    {
        return ncStaffinfoDao.insertNcStaffinfo(ncStaffinfo);
    }

    /**
     * 修改NC 人员信息
     *
     * @param ncStaffinfo NC 人员信息
     * @return 结果
     */
    @Override
    public int updateNcStaffinfo(NcStaffinfo ncStaffinfo)
    {
        return ncStaffinfoDao.updateNcStaffinfo(ncStaffinfo);
    }

    /**
     * 批量删除NC 人员信息
     *
     * @param pkPsndocs 需要删除的NC 人员信息ID
     * @return 结果
     */
    @Override
    public int deleteNcStaffinfoByIds(String[] pkPsndocs)
    {
        return ncStaffinfoDao.deleteNcStaffinfoByIds(pkPsndocs);
    }

    /**
     * 删除NC 人员信息信息
     *
     * @param pkPsndoc NC 人员信息ID
     * @return 结果
     */
    @Override
    public int deleteNcStaffinfoById(String pkPsndoc)
    {
        return ncStaffinfoDao.deleteNcStaffinfoById(pkPsndoc);
    }

    protected final Logger log = LoggerFactory.getLogger(this.getClass());

    @Override
    @Transactional
    public void initNcstaffInfoTEMP() {
        String start = DateUtil.currentDateDef();
        log.info("执行--+++——-------initNcStaffInfoTEMP开始时间：{}", start);
        ncStaffinfoDao.deleteNcStaffinfoAll();
        ncStaffinfoDao.deleteNcStaffinfoAllTEMP();
        boolean flag=true;
        int n=1;
        while (flag){
            JSONObject sr = NCUtil.getUserInfo(n+"","500",null,null);
            JSONArray data = sr.getJSONArray("data");
            if(data!=null&&data.size()>0){
                flag=true;
                n++;
                List<NcStaffinfo> list = JSONArray.parseArray(data.toString(),NcStaffinfo.class);
                ncStaffinfoDao.batchInsertNcStaffinfoTEMP(list);
            }else{
                flag=false;
            }
        }
        ncStaffinfoDao.insertRromTEMP();
        String end = DateUtil.currentDateDef();
        log.info("执行--+++——-------initNcStaffInfoTEMP结束时间：{}", end);
    }


    @Override
    public void initNcstaffInfoByMaxTs() {
        String maxTs = ncStaffinfoDao.maxTs();
        String start = DateUtil.currentDateDef();
        log.info("执行--+++——-------initNcstaffInfoByMaxTs开始时间：{}", start);
        ncStaffinfoDao.deleteNcStaffinfoAll();
        ncStaffinfoDao.deleteNcStaffinfoAllTEMP();
        boolean flag=true;
        int n=1;
        while (flag){
            JSONObject sr = NCUtil.getUserInfo(n+"","500",null,maxTs);
            JSONArray data = sr.getJSONArray("data");
            if(data!=null&&data.size()>0){
                flag=true;
                n++;
                List<NcStaffinfo> list = JSONArray.parseArray(data.toString(),NcStaffinfo.class);
                ncStaffinfoDao.batchInsertNcStaffinfoTEMP(list);
            }else{
                flag=false;
            }
        }
        ncStaffinfoDao.insertRromTEMP();
        String end = DateUtil.currentDateDef();
        log.info("执行--+++——-------initNcstaffInfoByMaxTs结束时间：{}", end);
    }
}
